﻿using System;
using System.Collections.Generic;
using System.ComponentModel; 
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ADV_Evaluator;
using ADV_Evaluator.Data;
using ADV_Evaluator.Command;


namespace ADV_Editor.CommandDialog {

    /// <summary>
    /// 「ウェイト」コマンドのダイアログ
    /// </summary>
    partial class WaitDialog : CommandDialogBase {

        /// <summary>
        /// 空の状態からはじめるコンストラクタ
        /// </summary>
        public WaitDialog() {
            InitializeComponent();
        }

        /// <summary>
        /// 属性を指定してはじめるコンストラクタ
        /// </summary>
        /// <param name="param">属性</param>
        public WaitDialog(WaitParams param) : this() {
            switch(param.Mode){
            case WaitMode.Frame:
                radioButton_Frame.Checked = true;
                numericUpDown_Duration.Value = param.Duration;
                break;
            case WaitMode.WaitKey:
                radioButton_Key.Checked = true;
                break;
			case WaitMode.WaitClickable:
				radioButton_Clickable.Checked = true;
				break;
			}
        }

        /// <summary>
        /// フレーム数を指定 のチェックが変化したとき
        /// </summary>
        private void radioButton_Frame_CheckedChanged(object sender, EventArgs e) {
            numericUpDown_Duration.Enabled = radioButton_Frame.Checked;
        }

        /// <summary>
        /// 入力された文章をコマンド化したもの
        /// </summary>
        public override CommandListData Command {
            get {
                WaitParams param = new WaitParams();
                if (radioButton_Frame.Checked) {
                    param.Mode = WaitMode.Frame;
                    param.Duration = (int)numericUpDown_Duration.Value;
				}
				else if (radioButton_Key.Checked)
				{
					param.Mode = WaitMode.WaitKey;
				}
				else
				{
					param.Mode = WaitMode.WaitClickable;
				}
                return new CommandListData(CommandName.ウェイト, param); 
            }
        }

        #region ヘルプ
        /// <summary>
        /// OKボタンのヘルプ
        /// </summary>
        private void button_OK_HelpRequested(object sender, HelpEventArgs hlpevent) {
            ShowPopupHelp(sender, "このダイアログを閉じて、コマンドを追加します。");
        }
        /// <summary>
        /// キャンセルボタンのヘルプ
        /// </summary>
        private void button_Cancel_HelpRequested(object sender, HelpEventArgs hlpevent) {
            ShowPopupHelp(sender, "変更内容を保存せずにこのダイアログを閉じます。");
        }
        /// <summary>
        /// フレーム数を指定 のラジオボタンのヘルプ
        /// </summary>
        private void radioButton_Frame_HelpRequested(object sender, HelpEventArgs hlpevent) {
            ShowPopupHelp(sender, "一定時間強制的にウェイトをかけるときはチェックを入れます。");
        }
        /// <summary>
        /// 指定するフレーム数のヘルプ
        /// </summary>
        private void numericUpDown_Duration_HelpRequested(object sender, HelpEventArgs hlpevent) {
            ShowPopupHelp(sender, "ウェイトをかける時間分のフレーム数を指定します。");
        }
        /// <summary>
        /// キー入力があるまでウェイト のラジオボタンのヘルプ
        /// </summary>
        private void radioButton_Key_HelpRequested(object sender, HelpEventArgs hlpevent) {
            ShowPopupHelp(sender, "プレイヤーからキー若しくはマウス入力があるまでウェイトをかけるときはチェックを入れます。");

        }
        #endregion

    }
}